package models

// TaskType 任务类型
type TaskType string

const (
	TaskTypeOceanCustomReport TaskType = "ocean_custom_report" // 巨量自定义报表数据
)

type Task struct {
	ID           string                   `json:"id"`
	Type         TaskType                 `json:"type"`
	MaxWorkers   int                      `json:"max_workers"`
	Items        []map[string]interface{} `json:"items"`
	CommonParams map[string]interface{}   `json:"common_params"`
}

// ItemTaskResult 单个任务项的处理结果
type ItemTaskResult struct {
	ItemID  string      `json:"item_id"`
	Error   *APIError   `json:"error"`    // 错误信息
	IsBreak bool        `json:"is_break"` // 是否中断任务
	Data    interface{} `json:"data"`     // 处理结果
}

// TaskResult 整个任务的结果集合
type TaskResult struct {
	ID         string                    `json:"id"`
	Status     string                    `json:"status"`
	Results    map[string]ItemTaskResult `json:"results"`
	Error      string                    `json:"error,omitempty"`
	StartTime  int64                     `json:"start_time"`
	EndTime    int64                     `json:"end_time,omitempty"`
	TotalCount int                       `json:"total_count"`
	Success    int                       `json:"success"`
	Failed     int                       `json:"failed"`
}

// TaskStatus 任务状态
type TaskStatus struct {
	TaskID    string `json:"task_id"`    // 任务ID
	Status    string `json:"status"`     // 任务状态
	Progress  int    `json:"progress"`   // 处理进度（百分比）
	Error     string `json:"error"`      // 错误信息
	StartTime int64  `json:"start_time"` // 开始时间戳
	EndTime   int64  `json:"end_time"`   // 结束时间戳
}
